package com.foruo.learn.designmode.iterator;

/**
 * 具体迭代器 - 就像ArrayList中的Itr
 *
 * 核心方法
 * @see MyIterator#hasNext()
 * @see MyIterator#next()
 *
 * @author GaoYuan
 * @date 2018/11/11 下午3:36
 */
public class MyIterator implements Iterator {

    /** 聚合对象 */
    private List list;
    /** 遍历的下标索引 */
    private int index;

    public MyIterator(List list) {
        this.list = list;
    }

    /**
     * 是否有下个元素
     * @author GaoYuan
     * @date 2018/11/11 上午8:45
     */
    @Override
    public boolean hasNext() {
        if(index < list.getSize()){
            return true;
        }
        return false;
    }

    /**
     * 直接返回下个元素
     * @author GaoYuan
     * @date 2018/11/11 上午8:46
     */
    @Override
    public Object next() {
        if(hasNext()){
            // 记得 ++
            return list.get(index++);
        }
        return null;
    }
}
